import dayjs from "dayjs";
/**
 * 图片生成base64
 */
export const imgToBase64 = (file: File) => {
  return new Promise(resolve => {
    // 生成base64
    const reader = new FileReader();
    reader.onload = function (event) {
      const base64String = event.target.result;
      resolve(base64String);
    };
    reader.readAsDataURL(file);
  });
};

// 格式化时间
export const formateDate = (date: string, isShowSeconds = false) => {
  const format = isShowSeconds ? "YYYY-MM-DD HH:mm:ss" : "YYYY-MM-DD HH:mm";
  return dayjs(date).format(format);
};
// 时间加减
export const getAddTime = (time: string, duration: number, isFull = false) => {
  const d = dayjs(time);
  return isFull
    ? d.add(duration, "second").format("YYYY-MM-DD HH:mm")
    : d.add(duration, "second").format("HH:mm");
};
// 保留一位小数
export const formatNumber = (number: number) => {
  // 保留一位小数
  const formattedNumber = number?.toFixed(1);
  // 判断是否需要显示小数
  return formattedNumber?.endsWith(".0")
    ? parseInt(formattedNumber)
    : formattedNumber;
};

/**
 * 文件下载 a标签方式
 */

export const downloadFileViaA = (url: string, filename: string) => {
  const a: HTMLAnchorElement = document.createElement("a");
  a.style.setProperty("display", "none"); // 创建一个隐藏的a标签
  a.download = filename;
  a.href = url;
  document.body.appendChild(a);
  a.click(); // 触发a标签的click事件
  document.body.removeChild(a);
};

/**
 * url只保留路径
 */
export const getPath = (urlString: string) => {
  // 如果不是url直接返回
  const urlRegex = /^https?/i;
  if (!urlRegex.test(urlString)) {
    return urlString;
  }
  // 创建 URL 对象
  const url = new URL(urlString);

  // 获取路径部分
  let path = url.pathname;

  // 去除第一个斜杠
  if (path.startsWith("/")) {
    path = path.substring(1);
  }
  return path;
};

/**
 * 时间间隔 天数
 */
export const getDiffDays = (endAt: string) => {
  const date1 = dayjs();
  const date2 = dayjs(endAt);
  return date2.diff(date1, "day");
};
